package com.algorithm.liyc.echa;

import com.algorithm.liyc.entity.TreeNode;

/**
 * 0669.修剪二叉搜索树
 * 给定一个二叉搜索树，同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树，使得所有节点的值在[L, R]中 (R>=L) 。
 * 你可能需要改变树的根节点，所以结果应当返回修剪好的二叉搜索树的新的根节点。
 *
 * @author Liyc
 * @date 2024/1/16 14:12
 **/

public class Solution25 {
    public TreeNode trimBST(TreeNode root, int low, int high) {
        if (root == null) return null;
        if (root.val < low) {// 寻找符合区间[low, high]的节点
            TreeNode left = trimBST(root.right, low, high);
            return left;
        }
        if (root.val > high) {// 寻找符合区间[low, high]的节点
            TreeNode right = trimBST(root.left, low, high);
            return right;
        }
        root.left = trimBST(root.left, low, high);// root->left接入符合条件的左孩子
        root.right = trimBST(root.right, low, high);// root->right接入符合条件的右孩子
        return root;
    }
}
